package br.com.Orange.dao;

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

import br.com.Orange.util.negocio.ObjetoIdentificado;

public abstract class RepositorioGenericoMap 
					<ID, Dado extends ObjetoIdentificado<ID>>{
	
	protected Map<ID, Dado> dados;
	
	public RepositorioGenericoMap(){
		dados = new HashMap<ID, Dado>();
	}
	
	public void inserir (Dado dado) {
		dados.put(dado.getID(), dado);
	}
	
	public void atualizar(Dado dado) {
		dados.put(dado.getID(), dado);
	}
	
	public void remover(ID id) {
		dados.remove(id);
	}
	
	public Dado procurar (ID id) {
		return dados.get(id);
	}
	
	public boolean existe(ID id){
		return dados.containsKey(id);
	}
	
	public Collection<Dado> listar() {
		Collection<Dado> col = new HashSet<Dado>(); 
		for (Map.Entry<ID, Dado> entry : dados.entrySet()){
			col.add(entry.getValue());
		}
		return col;
	}
	
}